package cn.bearspark.user.rpc;

import cn.bearspark.user.dto.UserAtDTO;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 用户 @ 服务的远程调用接口
 *
 * @author f
 */
public interface UserAtRpc {

    /**
     * 添加其它模块中的 @ 的用户名
     *
     * @param moduleCode     模块的枚举值
     * @param moduleDataId   该数据的主键 id
     * @param atUsernameList @ 的用户名集合
     */
    void addAtUsernameList(int moduleCode, long moduleDataId, List<String> atUsernameList);

    /**
     * 批量获取数据中 @ 用户信息集合
     *
     * @param moduleCode      模块的枚举值
     * @param moduleDataIdSet 数据的主键 id 集合
     * @return 数据中 @ 用户名集合的映射，key：数据的主键 id，value：数据中 @ 的用户信息集合
     */
    Map<Long, List<UserAtDTO>> mapAtUsernameSet(int moduleCode, Set<Long> moduleDataIdSet);

    /**
     * 删除指定模块下指定数据 @ 的所有用户信息
     *
     * @param moduleCode   模块的枚举值
     * @param moduleDataId 数据的主键 id
     */
    void delete(int moduleCode, long moduleDataId);
}
